#ifndef WAREHOUSE_H_
#define WAREHOUSE_H_

// 确定仓库文件的位置（需要进入build里面执行）
#define WAREHOUSEFILE	"../data/warehouse.txt"


/*
** 货物节点结构体（双向循环链表）
** id		货物唯一ID
** name		货物名称
** quantity	数量
** prev		前向指针
** next		后向指针
*/ 
typedef struct ItemNode{
	int id;
	char name[50];
	int quantity;
	struct ItemNode *prev;
	struct ItemNode *next;
} ItemNode;


/*
** 功能：创建货物节点
** id		货物唯一ID
** name		货物名称
** quantity	数量
*/ 
extern ItemNode *create_node(int id, const char *name, int quantity);

/*
** 功能：创建链表
** id		货物唯一ID
** name		货物名称
** quantity	数量
*/ 
extern ItemNode *list_init(void);


/*
** 功能：插入货物节点
** head		货物链表
** new		准备添加的货物节点
*/ 
extern void list_add_tail(ItemNode *head, ItemNode *new);

/*
** 功能：根据id删除货物节点
** head		货物链表
** new		准备添加的货物节点
*/ 
extern void delete_by_id(ItemNode *head, int id);

/*
** 功能：根据id查找货物节点
** head		货物链表
** new		准备查找的货物节点
*/ 
extern ItemNode *find_by_id(ItemNode *head, int id);

/*
** 功能：遍历货物
** head		货物链表
*/ 
extern void list_for_each(ItemNode *head);


/*
** 功能：从文件加载数据
** filename		文件名字
*/ 
extern void file_load_data(ItemNode *head, const char *filename);

/*
** 功能：保存数据到文件
** filename		文件名字
*/ 
extern void file_save_data(ItemNode *head, const char *filename);


#endif